小游戏5,6

Hash长度拓展攻击

1.题目地址http://web.bxsteam.xyz/hash/admin.php

题目提示是粗心的程序完了删掉什么东西,还自以为Hash很安全。提示的很明显,直接在链接后面加上.swp得到程序员在用VI时不正常退出的一个类似备份文件,在Linux中将该文件恢复。vim -r admin.php.swp。里面关键代码就是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 <?php
$auth = false;
$role = "guest";
$salt ="xxxxxxxxxxxxx";//len:13
if (isset($_COOKIE["role"]))
{
$role = $_COOKIE["role"];
$hsh = $_COOKIE["hsh"];
if (stripos($role,"admin")!==false&&$hsh === md5($salt.$_COOKIE["role"]))
{
$auth = true;
}
else
{
$auth = false;
}
}
else
{
$s = $role;
setcookie('role',$s);
$hsh = md5($salt.$s);
setcookie('hsh',$hsh);
}
if ($auth) {
echo "Welcome Admin.Your flag is cumtctf{you_know_this_is_not_the_flag}";
} else {
echo "<h3>Only Admin can see the flag!!";
}
?>

这个代码很简单,以前做过这样的题,就是Hash长度拓展攻击。在我的理解里这种攻击就是,当你知道A+B的hash值,且知道B,A的长度知道,那么我们就可以知道在A+B后面附属一些其他值的hash。这是跟Hash算法的过程有关系的。

回到题目,我们打开开发者工具,去看一开始我们什么都没有输入的网页回复

根据代码这hsh是字符串$salt与guest连接后的字符串MD5值,如果要$auth为真,则需要$role的值有admin,并且这个$salt与$role的值与传入的hsh相等。根据上面介绍的,所以很简单了。我们知道A的长度是13,B的值为guest,为了达到效果,我们附属的值为admin,利用现有的工具hashpump,得到:

1
2
3
4
5
6
nput Signature: c70ab9d039f166c5b5f506a5698ebaa1
Input Data: guest
Input Key Length: 13
Input Data to Add: admin
37d0fe2c401a689be9608e9f850ef3de//对于的hash
guest\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00admin

抓包修改,ok了

找一找

这种在页面中找FLAG的题,无非就是右键源码和抓包看,总之抓包不会骗人

1.http://202.119.201.199/challenge/basic/findflag2/

你不抓包看图片,是看不到到的,它会被遮到

2 http://202.119.201.199/challenge/basic/findflag1/

在一段CSS中看见

1
2
3
4
5
6
7
8
9
10
11
12
13
@media (min-device-width: 600px) and (max-width: 400px) {
body:before {
display: block;
position: fixed;
z-index: 1000;
width: 100px;
height: 100px;
top: 20%;
left: 40%;
background-color: red;
content: "flag{small_screen_small_flag}";
}
}

即是如此

文章目录
  1. 1. Hash长度拓展攻击
  2. 2. 找一找